<?php

class Db
{
    private $link;

    /**   构造函数
     * Db constructor.
     * @param $dbname  数据库名称
     * @param $user 用户名
     * @param $pwd 密码
     * @param $host 地址
     */
    public function __construct($dbname,$user,$pwd,$host="127.0.0.1")
    {
        //连接数据库
        $this->link = new PDO("mysql:host=$host;dbname=$dbname", $user, $pwd);
        //设置字符集
        $this->link->exec("set names utf8");
        //开启调错模式
        $this->link->setAttribute(PDO::ATTR_ERRMODE,true);
    }

    /** 查询单条数据
     * @param $table   数据表名称
     * @param string $where  条件
     * @return mixed|string  返回值
     */
    public function getOne($table,$where="1"){
        //判断是否为空
        if(empty($table)){
            return "无数据表";
            die();
        }
        //sql语句
        $sql="select * from `$table` where $where";
        //执行
        $stmt=$this->link->query($sql);
        //结果
        return $stmt->fetch(2);
    }

    /**  查询多条数据
     * @param $table   数据表名称
     * @param string $where  条件
     * @return mixed|string  返回值
     */
    public function getAll($table,$where="1"){
        //判断是否为空
        if(empty($table)){
            return "无数据表";
            die();
        }
        //sql语句
        $sql="select * from `$table` where $where";
        //执行
        $stmt=$this->link->query($sql);
        //结果
        return $stmt->fetchAll(2);
    }

    /** 添加数据
     * @param $table 数据表名称
     * @param $array 数组
     * @return int|string  返回值
     */
    public function add($table,$array){
        //判断是否为空
        if(empty($table) || count($array)==0){
            return "无数据表或无数据";
            die();
        }
        $field="";
        $val="";
        foreach($array as $key=>$value){
            $field.="`$key`,";
            $val.=$this->link->quote($value).",";
        }
        //截取
        $field=substr($field,0,-1);
        $val=substr($val,0,-1);
        //sql语句
        $sql="insert into `$table` ($field) VALUES ($val)";
//        echo $sql;
        //执行
        return $this->link->exec($sql);
    }

    /** 删除数据
     * @param $table 数据表名称
     * @param $where  条件
     * @return int|string 返回值
     */
    public function del($table,$where){
        //判断是否为空
        if(empty($table) || empty($where)){
            return "无数据表或无数据";
            die();
        }
        //sql语句
        $sql="delete from `$table` where $where";
//       echo $sql;
        //执行
        return $this->link->exec($sql);
    }

    /** 修改数据
     * @param $table  数据表名称
     * @param $count 数组
     * @param $where 条件
     * @return int|string 返回值
     */
    public function save($table,$count,$where){
        //判断是否为空
        if(empty($table) || empty($where) || count($count)==0){
            return "无数据表或无数据";
            die();
        }
        $val="";
        foreach($count as $key=>$value){
            $val.="`$key`='$value'";
        }
        //截取
        $val=substr($val,0,-3);
        //sql语句
        $sql="update $table set $val where $where";
//        echo $sql;
        //执行
        return $this->link->exec($sql);
    }
    public function __destruct()
    {
        // 结束
        $this->link="";
    }
}







?>